// pages/vip_center/index.js
const { checkLoginForAction } = require('../../utils/login-interceptor')
const authManager = require('../../utils/auth')

Page({

  /**
   * 页面的初始数据
   */
  data: {
    navBarHeight: 0, // 导航栏总高度 = 状态栏高度 + 导航栏高度
    contentTop: 0, // 内容区域top位置
    loading: true,
    user: null,
    currentLevel: null,
    nextLevel: null,
    allLevels: [],
    upgradeProgress: 0,
    canUpgrade: false,
    upgrading: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 检查登录状态
    if (!authManager.isLoggedIn()) {
      wx.showToast({
        title: '请先登录',
        icon: 'none',
        duration: 1500
      })
      setTimeout(() => {
        wx.navigateTo({
          url: '/pages/login/index'
        })
      }, 1500)
      return
    }

    // 计算导航栏高度
    const systemInfo = wx.getSystemInfoSync()
    const statusBarHeight = systemInfo.statusBarHeight
    const navBarHeight = statusBarHeight + 44 // 44是导航栏内容高度
    
    this.setData({
      navBarHeight,
      contentTop: navBarHeight
    })

    // 加载会员信息
    this.loadMemberInfo()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  /**
   * 加载会员信息
   */
  async loadMemberInfo() {
    try {
      wx.showLoading({
        title: '加载中...'
      })

      const result = await wx.cloud.callFunction({
        name: 'getMemberInfo'
      })

      if (result.result.success) {
        // 格式化数据，避免在WXML中使用.toFixed()
        const formattedData = {
          user: result.result.data.user,
          currentLevel: {
            ...result.result.data.currentLevel,
            formattedDiscountRate: (result.result.data.currentLevel.discountRate * 10).toFixed(1)
          },
          nextLevel: result.result.data.nextLevel,
          allLevels: result.result.data.allLevels,
          upgradeProgress: result.result.data.upgradeProgress.toFixed(1),
          canUpgrade: result.result.data.canUpgrade,
          loading: false
        }
        
        this.setData(formattedData)
      } else {
        wx.showToast({
          title: result.result.message || '加载失败',
          icon: 'none'
        })
      }
    } catch (error) {
      console.error('加载会员信息失败:', error)
      wx.showToast({
        title: '加载失败',
        icon: 'none'
      })
    } finally {
      wx.hideLoading()
      this.setData({
        loading: false
      })
    }
  },

  /**
   * 会员升级
   */
  async handleUpgrade() {
    if (!this.data.canUpgrade || this.data.upgrading) {
      return
    }

    try {
      this.setData({
        upgrading: true
      })

      wx.showLoading({
        title: '升级中...'
      })

      const result = await wx.cloud.callFunction({
        name: 'upgradeMember'
      })

      if (result.result.success) {
        wx.showToast({
          title: result.result.message,
          icon: 'success',
          duration: 2000
        })

        // 重新加载会员信息
        setTimeout(() => {
          this.loadMemberInfo()
        }, 2000)
      } else {
        wx.showToast({
          title: result.result.message || '升级失败',
          icon: 'none'
        })
      }
    } catch (error) {
      console.error('会员升级失败:', error)
      wx.showToast({
        title: '升级失败',
        icon: 'none'
      })
    } finally {
      wx.hideLoading()
      this.setData({
        upgrading: false
      })
    }
  },

  /**
   * 返回按钮点击事件
   */
  handleBack() {
    wx.navigateBack()
  }
})